Adjusting coordinates of touch input

ABSTRACT

A device may include a touch sensor for determining portions of a touchscreen display that receive touch inputs, and a motion sensor for identifying device motions of the device. Additionally, the device may include a processor to identify coordinates of a portion of the touchscreen display that receives a touch input, identify an input instant at which the touchscreen display receives the touch input, and determine a change of device motion that affects an accuracy of the coordinates of the touch input based on the input instant. In addition, the processor may adjust the coordinates based on the determined change of device motion.

BACKGROUND

In many types of devices, a user may provide input via a touchscreen.The touchscreen allows the user to interact with graphical userinterface (GUI) objects that are shown on the screen display.

SUMMARY

In one implementation, a touchscreen device may include a touch sensorfor determining portions of a touchscreen display that receive touchinputs and a motion sensor for identifying device motions of the device.Additionally, the device may include a processor to identify coordinatesof a portion of the touchscreen display that receives a touch input,identify an input instant at which the touchscreen display receives thetouch input, determine a change, of device motion, that affects anaccuracy of the coordinates of the touch input based on the inputinstant, and adjust the coordinates based on the determined change ofdevice motion.

In addition, the processor may be further configured to associate theadjusted coordinates with a graphical user interface (GUI) objectlocated at the adjusted coordinates at the input instant.

In addition, the processor may be further configured to determine anoutput associated with the touch input based on the adjustedcoordinates, and further adjust the output using a secondary predictiveprocess.

In addition, when determining the change in device motion, the processormay further identify an input motion interval during which changes inthe device motion affects the accuracy of the touch input. The inputmotion interval ends at the input instant. The processor also receives aplurality of device motion values over the input motion interval, anddetermines the change in device motion based on the plurality of devicemotion values.

In addition, when identifying the input motion interval, the processormay further provide a simulated touch input test that includes aconfiguration of graphical user interface (GUI) objects, and determinethe input motion interval based on the simulated touch input test.

In addition, when determining the input motion interval based on thesimulated touch input test, the processor may further identify anexpected touch input at an expected touch location, receive a test touchinput at a test touch location, identify a simulated device motionassociated with the test touch input, determine a distance between thetest touch location and the expected touch location, and determine theinput motion interval based on the simulated device motion and thedistance between the test touch location and the expected touchlocation.

In addition, the device may include one of a cell phone, a tablet, anelectronic notepad, a gaming console, a laptop computer, a personaldigital assistant, or a personal computer.

In addition, the processor may be further configured to determine thechange in device motion based on one or more of a yaw, pitch, or roll ofthe device in a multi-coordinate system.

Additionally, the processor may be further configured to provide theadjusted coordinates as an input for a primary application, wherein theprimary application includes one of an email program, a texting program,a web browser, and a gaming application.

According to another implementation, a computer-implemented method mayinclude identifying coordinates, of a portion of the touchscreendisplay, that receives a touch input, identifying an input instant,wherein the input instant is an instant at which the touchscreen displayreceives the touch input, and determining a change, of device motion,that affects an accuracy of the touch input based on the input instant.The computer-implemented method may also include adjusting thecoordinates based on the determined change of device motion.

In addition, the computer-implemented method may further includeassociating the adjusted coordinates with a graphical user interface(GUI) object located at the adjusted coordinates.

In addition, the computer-implemented method may further includedetermining an output associated with the touch input based on theadjusted coordinates, and further adjusting the output using a secondarypredictive process.

In addition, when determining the change in device motion, thecomputer-implemented method may further include identifying an inputmotion interval during which changes in the device motion affects theaccuracy of the touch input. The input motion interval ends at the inputinstant. The method may also include receiving a plurality of devicemotion values over the input motion interval and determining the changein device motion based on the plurality of device motion values.

In addition, when identifying the input motion interval, thecomputer-implemented method may further include providing a simulatedtouch input test that includes a configuration of graphical userinterface (GUI) objects, and determining the input motion interval basedon the simulated touch input test.

In addition, when determining the input motion interval based on thesimulated touch input test, the computer-implemented method may furtherinclude identifying an expected touch input at an expected touchlocation, receiving a test touch input at a test touch location,identifying a simulated device motion associated with the test touchinput, determining a distance between the test touch location and theexpected touch location, and determining the input motion interval basedon the simulated device motion and the distance between the test touchlocation and the expected touch location.

In addition, the computer-implemented method may further includedetermining the change in device motion based on one or more of a yaw,pitch, or roll of the device in a multi-coordinate system.

In addition, the computer-implemented method may further includeproviding the adjusted coordinates as an input for a primaryapplication, wherein the primary application includes one of an emailprogram, a texting program, a web browser, and a gaming application.

In another implementation, a computer-readable medium includingcomputer-executable instructions, the computer-executable instructionsmay include instructions to identify coordinates of a portion of thetouchscreen display that receives a touch input, identify an inputinstant. The input instant is an instant at which the touchscreendisplay receives the touch input. The computer-readable medium alsoincludes instructions to determine a change of device motion thataffects an accuracy of the coordinates of the touch input based on theinput instant, adjust the coordinates based on the determined change ofdevice motion, and provide the adjusted coordinates as an input for aprimary application, wherein the primary application includes one of anemail program, a texting program, a web browser, and a gamingapplication.

In addition, the computer-readable instructions may be executed on a thedevice including one of a cell phone, an electronic notepad, a gamingconsole, a laptop computer, a personal digital assistant, or a personalcomputer.

In addition, the computer-readable instructions include instructions forcausing the one or more processors to associate the adjusted coordinateswith a graphical user interface (GUI) object located at the adjustedcoordinates at the input instant.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate one or more embodiments describedherein and, together with the description, explain the embodiments. Inthe drawings:

FIG. 1 illustrates the concepts described herein;

FIG. 2 is a diagram of an exemplary device that implements the conceptsdescribed herein;

FIG. 3 is a block diagram of the device of FIG. 2;

FIG. 4A is a coordinate adjustment data flow diagram for a portion ofthe device of FIG. 2;

FIG. 4B is a conceptual representation diagram that is associated withadjusting coordinates in a touchscreen display;

FIG. 5 is a flow diagram of an exemplary process associated withadjusting coordinates of a touch input; and

FIG. 6 is a flow diagram of an exemplary process for determining aninput motion interval.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings.

The same reference numbers in different drawings may identify the sameor similar elements. Also, the following detailed description isexemplary and explanatory only and is not restrictive of the invention,as claimed.

In the following, a motion sensor may receive and record a device motionof a touchscreen device at predetermined instances. A touch sensor mayreceive a touch input from a user. The touchscreen device may determinewhether there was a change in the motion of the touchscreen deviceduring a predetermined time preceding the input. The change in motionmay correspond to a sudden movement of the touchscreen device in anarbitrary direction. The touchscreen device may compensate for thechange in motion to determine the coordinates that the user intended toselect.

FIG. 1 illustrates one implementation of the above concept. FIG. 1 showsa device 102 that may include a touchscreen display 104, which, in turn,may display GUI objects 106 (in this particular instance, keys of analphanumeric keyboard) that may be located at particular coordinates oftouchscreen display 104 at particular times. User 110 may usetouchscreen display 104 for user input, for example when composingemails, texting, browsing, etc.

Device 102 may have an associated device motion 108. Device motion 108may include a velocity (i.e., a speed and a direction) in which device102 may move. Device 102 may receive an indication of coordinates of aparticular GUI object 106 from a touch input that user 110 may apply totouchscreen display 104 using an input instrument 112. User 110 may havean associated user motion 114, which includes a user velocity and userdirection, at which input instrument 112 touches device 102 to selectGUI objects 106.

When user 110 intends to input selection of a particular GUI object 106to device 102, for example, a letter key A using a word processingprogram, user 110 may use input instrument 112 to provide a touch inputat a particular portion of touchscreen display 104 at which particularGUI object 106 is displayed. The particular portion of touchscreendisplay 104 may have coordinates that correspond to particular GUIobject 106 in an application and/or memory associated with device 102.For example, the coordinates may correspond to two dimensionalcoordinates (x, y) in a representation of touchscreen display 104 in aCartesian coordinate system that is associated with device 102.

User 110 may decide at a particular instant (“the input decision time”)to touch the particular portion of touchscreen display 104 at whichparticular GUI object 106 is located and may begin a motion (selectionmotion 116) towards touching the particular portion of touchscreendisplay 104. Selection motion 116 may include a velocity and a directionin which user 110 moves input instrument 112 (e.g., finger or stylus).User 110 may touch user device 102 at the particular portion oftouchscreen display 104 at which the particular intended GUI object 106is located. The time between the input decision time and the inputinstant may be defined as a user response time. The user response timemay include a time between an actual thought of selecting the particularportion of touchscreen display 104 (e.g., the time of the start of themotion) and an actual instant that input instrument 112 touchestouchscreen display 104.

In many instances, device motion 108 may be constant in both velocityand direction. If the motion of the body of user 110 is approximatelyequivalent in both direction and velocity to device motion 108,performing selection motion 116 may allow user 110 to provide input(e.g., via instrument 112) to the particular portion of touchscreendisplay 104 (i.e., user 110 puts finger on touchscreen display 104 atGUI object). In these instances, the user reaction time, and devicemotion 108, may not affect the selection of a particular portion oftouchscreen display 104, i.e., a particular key, because, from theperspective of user 110, touchscreen device 102 is stationary (or movingin the same relative direction and at the same velocity as user 110).

However, in some instances, device motion 108 may vary between the inputdecision time and the input instant. If user 110 is using device 102 andreceives a change in device motion 108 (e.g., a sudden jolt whilewalking, driving, etc., and using device 102) between the user inputdecision time and the input instant, input instrument 112 may bedeviated from touching the particular portion of touchscreen display 104and may contact a portion that user 110 did not intend to touch. Inother words, user 110 may “miss” a target area of touchscreen display104 because of an unexpected change in device motion 108. User motion114 may have intended to select a particular GUI object 106 and mayselect another portion of touchscreen display 104 instead, e.g. adifferent key.

Device 102 may include a motion sensor, such as an accelerometer and/orgyroscope (not shown in FIG. 1), capable of detecting and recordingdevice motion 108, which may include a change invelocity/acceleration/orientation of device 102.

The motion sensor may detect instances of device motion 108 between theinput decision time and the input instant. For example, the motionsensor may provide information at predetermined intervals regarding thedevice motion 108 from which the changes in device motion 108 may bedetermined Device 102 may determine coordinates of an area that istouched by input instrument 112. Device 102 may compensate for thechanges in device motion 108 by adjusting the coordinates of the areaactually touched by input instrument 112 based on the changes in devicemotion 108, as described below.

According to one implementation, device 102 may include a motion sensor,such as a gyroscope, which may detect changes in the orientation ofdevice 102. Changes in the orientation of device 102 may contribute to adeviation from the intended portion of touchscreen display 104. Themotion sensor may measure orientation at each instance and provide theinformation to be used in determining the change in orientation ofdevice 102 over the duration of the input motion interval.

According to one implementation, device 102 may include a motion sensorthat is capable of selection motion 116 of the input instrument in athree-dimensional (3D) field. The motion sensor may detect angularacceleration of the input instrument 112, and project the vector valueof the angular acceleration component of selection motion 116 to theplane of display screen. Device 102 may use this vector to approximatethe distance in XY coordinates of the screen, for compensation distance.

Although the particular implementation discussed is described withrespect to input provided to a touchscreen display and Cartesiancoordinates of the input in two dimensions, principles disclosed hereinmay be implemented in different systems that may include a 3D inputentry field, such as a 3D motion gaming application. Additionally,although GUI objects 106 may include different types of buttons, menuitems, icons, cursors, arrows, textboxes, images, text, selectable listbox, hyperlinks, etc., GUI objects 106 in FIG. 1 are illustrated aswindows with GUI alphanumeric keypads.

FIG. 2 is a diagram of an exemplary device 200 in which the conceptsdescribed herein may be implemented. Device 200 may include any of thefollowing devices: a mobile telephone; a cellular phone; a personalcommunications system (PCS) terminal that may combine a cellularradiotelephone with data processing, facsimile, and/or datacommunications capabilities; an electronic notepad, a tablet computer, alaptop, and/or a personal computer; a personal digital assistant (PDA)that can include a telephone; a gaming device or console; a peripheral(e.g., wireless headphone); a digital camera; or another type ofcomputational or communication device that combines a touchscreen and asensor capable of determining the motion of the device.

In this implementation, device 200 may take the form of a mobile phone(e.g., a cell phone). As shown in FIG. 2, device 200 may include aspeaker 202, a touchscreen display 204, control buttons 206, amicrophone 210, sensors 212, a front camera 214, and a housing 216.Speaker 202 may provide audible information to a user of device 200.

Display 204 may provide visual information to the user, such as an imageof a caller, video images, or pictures. In addition, display 204 mayinclude a touchscreen for providing input to device 200. Display 204 mayprovide hardware/software to detect the coordinates of an area that istouched by user 110. For example, display 204 may include a displaypanel, such as a liquid crystal display (LCD), organic light-emittingdiode (OLED) display, and/or another type of display that is capable ofproviding images to a viewer. Display 204 may include a transparentpanel/surface for locating the position of a finger or an object (e.g.,stylus) when the finger/object is touching or is close to display 204.

In one implementation, display 204 may generate an electric field at itssurface and detect changes in capacitance and the electric field due toa nearby object. A separate processing unit (not shown) that is attachedto an output of display 204 may use the output of display 204 togenerate the location of disturbances in the electric field, and thusthe location of the object (i.e., the touch input).

Control buttons 206 may permit the user to interact with device 200 tocause device 200 to perform one or more operations, such as place orreceive a telephone call. In some implementations, control buttons 206may include a telephone keypad (not shown) that may be complementary toGUI objects generated on touchscreen display 204. Microphone 210 mayreceive audible information from the user. Sensors 212 may collect andprovide, to device 200, information (e.g., acoustic, infrared, etc.)that is used to aid the user in capturing images or in providing othertypes of information (e.g., a distance between a user and device 200).Front camera 214 may enable a user to view, capture and store images(e.g., pictures, video clips) of a subject in front of device 200.Housing 216 may provide a casing for components of device 200 and mayprotect the components from outside elements.

FIG. 3 is a block diagram of the device of FIG. 2. As shown in FIG. 3,device 200 may include a processor 302, a memory 304, input/outputcomponents 308, a network interface 310, a touch sensor 312, a motionsensor 314, and a communication path 316. In different implementations,device 200 may include additional, fewer, or different components thanthe ones illustrated in FIG. 2. For example, device 200 may includeadditional network interfaces, such as interfaces for receiving andsending data packets.

Processor 302 may include a processor, a microprocessor, an ApplicationSpecific Integrated Circuit (ASIC), a Field Programmable Gate Array(FPGA), and/or other processing logic (e.g., audio/video processor)capable of processing information and/or controlling device 200.

Memory 304 may include static memory, such as read only memory (ROM),and/or dynamic memory, such as random access memory (RAM), or onboardcache, for storing data and machine-readable instructions. Memory 304may also include storage devices, such as a floppy disk, CD ROM, CDread/write (R/W) disc, and/or flash memory, as well as other types ofstorage devices.

Memory 304 may include a coordinate adjustment application 306.Coordinate adjustment application 306 may include data andmachine-readable instructions to adjust coordinates received by device200 based on data regarding motion of device 200. Coordinate adjustmentapplication 306 may be executed by processor 302. Coordinate adjustmentapplication 306 may adjust coordinates indicated by a touch inputapplied to touchscreen display 104. Coordinate adjustment application306 may adjust the coordinates based on a change in device motion 108 toapproximate a touch input to device 102 that occurs with a constantdevice motion 108 (i.e., without a change in device motion 108).

Input/output components 308 may include a display screen (e.g.,touchscreen display 104, touchscreen display 204, etc.), a keyboard, amouse, a speaker, a microphone, a Digital Video Disk (DVD) writer, a DVDreader, Universal Serial Bus (USB) lines, and/or other types ofcomponents for converting physical events or phenomena to and/or fromdigital signals that pertain to device 200.

Network interface 310 may include any transceiver-like mechanism thatenables device 200 to communicate with other devices and/or systems. Forexample, network interface 310 may include mechanisms for communicatingvia a network, such as the Internet, a terrestrial wireless network(e.g., a WLAN), a cellular network, a satellite-based network, a WPAN,etc. Additionally or alternatively, network interface 310 may include amodem, an Ethernet interface to a LAN, and/or an interface/ connectionfor connecting device 200 to other devices (e.g., a Bluetoothinterface).

Touch sensor 312 may provide information regarding contact received fromuser 110 at a particular portion of a touchscreen display of device 200.Touch sensor 312 may be embedded/integrated into touchscreen display104.

Motion sensor 314 may include accelerometer, gyroscope, etc. thatprovides information regarding device motion 108 of device 200. Motionsensor 314 may periodically determine device motion 108 of device 200.In one implementation, motion sensor 314 may determine values associatedwith device motion 108, such as a velocity and direction of device 200using a multiple coordinate system/reference, such as a Cartesiancoordinate system, Euler angles or Tait-Bryan angles, thatintersects/overlaps with a conceptual representation of touchscreendisplay 104 and provide the values to be used in determining adjustedcoordinates for a touch input applied to a touchscreen display 204 ofdevice 200. Motion sensor 314 may determine values that incorporatedevice motion 108 around a center of mass of device 102 including tilt,turn, yaw, pitch, and roll of device 102. Motion sensor 314 may alsodetermine a change in orientation of touchscreen display 104.

Communication path 316 may provide an interface through which componentsof device 200 may communicate with one another.

FIG. 4A is a coordinate adjustment data flow diagram 400 for a portionof device 102. As shown in FIG. 4A, coordinate adjustment data flowdiagram 400 includes touch sensor 312, motion sensor 314, a coordinateadjustment application 306, and a primary application 430. Theparticular arrangement and number of components in data flow diagram 400as shown in FIG. 4A is illustrated for simplicity.

FIG. 4A is described with respect to FIG. 4B, which illustrates aconceptual representation diagram 450 that is associated with adjustingcoordinates in a touchscreen display.

As shown in FIG. 4A, touch sensor 312 may output coordinates 420 of aportion of touchscreen display 104 in response to a touch input from auser received on a portion of touchscreen display 104 (e.g., from user110 using input instrument 112 as described with respect to FIG. 1hereinabove). Touch sensor 312 may receive the touch input when user 110attempts to select a particular GUI object 106 on touchscreen display104. Touch sensor 312 may identify coordinates 420 of a portion oftouchscreen 204 touched by input instrument 112 based on Cartesiancoordinates of the particular portion of touchscreen display 104. Touchsensor 312 may provide coordinates 420 to coordinates adjustment module416.

Motion sensor 314 may determine information regarding device motion 108of device 102 relevant to the selection of coordinates 420. Theinformation may include the device motion 108 (e.g., angularacceleration, velocity, orientation, etc.) at predeterminedinstances/intervals. Motion sensor 314 may provide the values of devicemotion 108 to motion module 412. Alternatively, motion sensor 314 mayrecord and retain device motion 108 values and provide values relevantto a particular selection of coordinates 420 to motion module 412 inresponse to a request from motion module 412 (i.e., device motion 108determined over a particular input motion interval). Motion sensor 314may also provide information regarding an orientation of device 102. Theinput motion interval is a time that ends at the input instant duringwhich changes in device motion 108 may affect the accuracy of the touchinput.

Coordinate adjustment application 306 includes motion module 412, andcoordinates adjustment module 416.

Coordinates adjustment module 416 may receive coordinates 420 of theselected portion of touchscreen display 104 from touch sensor 312 whenuser 110 touches touchscreen display 104. In some instances, device 102may be subject to a change in device motion 108 that may affect anaccuracy of selection of coordinates 420. For example, coordinatesadjustment module 416 may receive coordinates 420 when user 110 touchestouchscreen display 104 concurrent to a motor vehicle in which user 110is being carried going over a pothole. The car's movement over thepothole may cause device 102 to shift and the touch to be placed at adifferent portion of touchscreen display 104 than the portion oftouchscreen display 104 intended by user 110.

Motion module 412 may receive values, for device motion 108, thatinclude values beginning at a start of the input motion interval. Theinput motion interval may be selected as a predetermined time intervalpreceding the input instant at which input instrument 112 touchestouchscreen display 104 (i.e., device motion 108 that occurs in a timeframe that may affect the selection of coordinates 420). Thepredetermined time interval may be selected based on an estimated userresponse time. The user response time may include a time between a startof the particular portion of touchscreen display 104 and an actualinstant that input instrument 112 touches touchscreen display 104. Theresponse time may be estimated based a typical/average user responsetime. A typical reaction time may span time in the order of hundreds ofmilliseconds.

Motion module 412 may analyze the values for device motion 108 over thepredetermined time interval and determine a positional vector 422 (e.g.,as shown in FIG. 4B) for device 102 that includes the change in velocityand/or direction over the predetermined time interval. Positional vector422 may provide a two dimensional representation of motion in themultiple coordinate system. Positional vector 422 may indicate that thechange in device motion 108 over the predetermined time interval movedpoints in touchscreen display 104 a distance (or units) indicated bypositional vector 422 (i.e., a number of units in the multiplecoordinate system). Because user 110 and device 102 may receive multiplejolts, the acceleration may change during the response time. Device 102may sample the acceleration many times in the response time interval, toaccurately integrate over the varying acceleration.

Motion module 412 may determine positional vector 422 based on anorientation of each touchscreen display 104. For example, device 102 mayinclude multiple touchscreen displays 104. Motion module 412 mayidentify components of device motion 108, such as a angle, yaw, pitchand roll of a particular touchscreen display 104 of device 102 based ondevice motion 108. Motion module 412 may determine positional vector 422based on of the components of device motion 108. For example, if user110 is positioned with respect to device 102 such that a change indevice motion 108 (i.e., acceleration, deceleration and/or change indirection of device 102) is at an angle that is substantiallyperpendicular to the plane of touchscreen display 104, motion module 412may determine a relatively smaller value for compensatory motion vector424 when compared to a compensatory motion vector 424 for changes indevice motion 108 that occur in the plane of touchscreen display 104(e.g., the change in device motion 108 occurs across a face of device102).

Motion module 412 may also determine a compensatory motion vector 424(e.g., as shown in FIG. 4B) that balances positional vector 422. Inother words, compensatory motion vector 424 may be an opposite motionvector to positional vector 422. Compensatory motion vector 424 may bean equal and opposite vector to positional vector 422 in terms of bothchange in acceleration and direction.

As shown in FIG. 4B, coordinates adjustment module 416 may receivecoordinates 420 from touch sensor 312 and compensatory motion vector 424from motion module 412. Coordinates adjustment module 416 may adjust aposition of coordinates 420 based on compensatory motion vector 424.Coordinates adjustment module 416 may provide GUI objects 106 thatcorrespond to adjusted coordinates 426 to primary application 430.

Primary application 430 may combine the adjusted coordinates 426 and/oridentified GUI objects 106 determined based on the adjusted coordinates426 with additional predictive processes to refine the adjustments oftouch input received from user 110. For example, additional predictiveprocess may include a spell check program that may further adjust thecoordinates 426. Primary application 430 may be an email program, atexting program, a web browser, a word processing program or a gamingapplication. In one example, coordinate adjustment application 306 mayperform an initial correction of alphanumeric input provided by user110, such as a word “if8de” to “iclude” based on changes in devicemotion 108. Primary application 430 may include a spell check programthat further corrects “iclude” to a word included in an associateddatabase, such as “include”.

According to one implementation, device 102 may provide a feedbackmechanism to fine tune to particular user input. For example, device 102may identify optimal response time for individual users based on a test,such as one described below with respect to FIG. 6 and process 600. Thecompensatory motion vectors 424 may increase in value for users thathave slower response times

FIG. 5 is a flow chart of an exemplary process for adjusting coordinatesof a touch input described herein. Process 500 is described with respectto conceptual representation 450. In one implementation, process 500 maybe performed by device 102. In another implementation, some or all ofprocess 500 may be performed by another device or group of devices,including or excluding device 102.

Assume that display 104 is displaying a plurality of GUI objects 106.Process 500 may start with motion sensor 314 identifying a device motion108 of device 102 at repeating intervals (e.g., motion sensor 314 mayidentify device motion 308 after time intervals that are one fifth of aninput motion interval) (block 502). Motion sensor 314 may identify avelocity and a direction of device motion 108.

At block 504, device 102 may identify coordinates of a touch input totouchscreen display 104. For example, a user 110 may apply a touch inputto touchscreen display 104 directed towards a particular GUI object 106at particular coordinates.

At block 506, device 102 may identify an input instant at which thetouch input was received.

Device 102 may determine a change in device motion 108 that may affectan accuracy of the touch input based on the input instant (block 508).For example, device 102 may request values for device motion 108 for aninput motion interval from motion sensor 314. Device 102 may determine achange in device motion 108 based on device motion values 108 measuredat each repeating interval within the input motion interval.

Device 102 may adjust the coordinates of the touch input based on thechange in device motion 108. For example, as shown in FIG. 4B, device102 may adjust the coordinates 420 of the touch input using acompensatory motion vector 424 that incorporates the change in devicemotion 108 in units corresponding to that of coordinates of the GUIobjects represented via touchscreen display 104.

FIG. 6 is a flow diagram of an exemplary process 600 for determining aninput motion interval. Process 500 is described with respect toconceptual representation 450. In some implementations, process 500 maybe performed by device 102. In another implementation, some or all ofprocess 600 may be performed by another device or group of devices,including or excluding device 102.

Assume that touchscreen display 104 is displaying a plurality of GUIobjects 106. Process 500 may start with device 102 identifying expectedtouch inputs that are to be input by user 110 (block 602). Each expectedtouch input may have an expected touch location. For example, device 102may provide a list of touch inputs (e.g., a test message) that is to beentered at touchscreen display 104. User 110 may enter the expectedtouch inputs under controlled conditions, such as in an otherwisestationary environment. During the input, the GUI of device 102 may bemoved or “scrolled” randomly.

Device 102 may receive test touch inputs from user 110 (block 604). Forexample, user 110 may type the test message into device 102 viatouchscreen display 104. Device 102 may receive test touch inputs attest touch locations on touchscreen display 104.

Device 102 may identify simulated device motion 108 (block 606). Forexample, device 102 may randomly scroll GUI objects 106 on touchscreendisplay 104 at a speed corresponding to a change in device motion 108,such as a change in device motion 108 received when a user 110 anddevice 102 are jostled on a public train.

Device 102 may determine a distance between the test touch location andthe expected touch location (block 608). For example, device 102 maymeasure a distance between coordinates of the test touch location andthe coordinates of the expected touch location.

Device 102 may determine an input motion interval (block 610). Forexample, device 102 may determine the input motion interval based on themagnitude of the distance between the location of the test touch inputand the expected touch input and a simulated device motion provided bydevice 102 preceding the input instant. The magnitude of the distancebetween the location of the test touch input and the expected touchinput may be related to the length of the input motion interval(measured in units of time, such as microseconds, etc.). If user 110enters test touch inputs at a slower pace or response time, the distancefrom the expected touch location to the test touch location caused bychanges in device motion 108 may increase accordingly.

The foregoing description of exemplary implementations providesillustration and description, but is not intended to be exhaustive or tolimit the embodiments described herein to the precise form disclosed.Modifications and variations are possible in light of the aboveteachings or may be acquired from practice of the embodiments.

For example, while series of blocks have been described with respect toFIGS. 5 and 6, the order of the blocks may be modified in otherimplementations. Further, non-dependent blocks may be performed inparallel.

It will be apparent that different aspects of the description providedabove may be implemented in many different forms of software, firmware,and hardware in the implementations illustrated in the figures. Theactual software code or specialized control hardware used to implementthese aspects is not limiting of the invention. Thus, the operation andbehavior of these aspects were described without reference to thespecific software code−it being understood that software and controlhardware can be designed to implement these aspects based on thedescription herein.

Although the implementations described above mainly refer to a adjustingtouch input of a device based on device motion, in otherimplementations, other types of input may be adjusted based on motionassociated with a receiving device or an input entity.

It should be emphasized that the term “comprises/comprising” when usedin this specification is taken to specify the presence of statedfeatures, integers, steps or components but does not preclude thepresence or addition of one or more other features, integers, steps,components, or groups thereof.

No element, act, or instruction used in the present application shouldbe construed as critical or essential to the implementations describedherein unless explicitly described as such. Also, as used herein, thearticle “a” is intended to include one or more items. Further, thephrase “based on” is intended to mean “based, at least in part, on”unless explicitly stated otherwise.

What is claimed is:
 1. A device comprising: a touch sensor fordetermining portions, of a touchscreen display, that receive touchinputs; a motion sensor for identifying device motions of the device;and a processor to: identify coordinates of a portion, of thetouchscreen display, that receives a touch input; identify an inputinstant, wherein the input instant is an instant at which thetouchscreen display receives the touch input; determine device motion,including angular acceleration, velocity and orientation, during a inputmotion interval ending at the input instant and having a predeterminedduration that is an estimated user response time, the device motionaffects an accuracy of the coordinates of the touch input; determine apositional vector that is a two dimensional representation of the devicemotion in a plane of the touch screen taken from components of thedevice motion; and adjust the coordinates with a compensation motionvector that is equal in magnitude and opposite in direction to thepositional vector.
 2. The device of claim 1, wherein the processor isfurther configured to: associate the adjusted coordinates with agraphical user interface (GUI) object located at the adjustedcoordinates at the input instant.
 3. The device of claim 1, wherein theprocessor is further configured to: determine an output associated withthe touch input based on the adjusted coordinates, and further adjustthe output using a secondary predictive process.
 4. The device of claim1, wherein, when determining the change in device motion, the processoris further to: receive a plurality of device motion values over theinput motion interval; and determine the device motion based on theplurality of device motion values.
 5. The device of claim 4, wherein,when identifying the input motion interval, the processor is furtherconfigured to: provide a simulated touch input test that includes aconfiguration of graphical user interface (GUI) objects displayed on thetouchscreen display and that move relative to the touchscreen display tosimulate device motion; and determine the input motion interval based onthe simulated touch input test.
 6. The device of claim 5, wherein, whendetermining the input motion interval based on the simulated touch inputtest, the processor is further configured to: identify an expected touchinput at an expected touch location; receive a test touch input at atest touch location; identify a simulated device motion associated withthe test touch input; determine a distance between the test touchlocation and the expected touch location; and determine the input motioninterval based on the simulated device motion and the distance betweenthe test touch location and the expected touch location.
 7. The deviceof claim 1, wherein the device includes: a cell phone, a tablet, anelectronic notepad, a gaming console, a laptop computer, a personaldigital assistant, or a personal computer.
 8. The device of claim 1,wherein the processor is further configured to: determine theorientation based on one or more of a yaw, pitch, or roll of the devicein a multi-coordinate system.
 9. The device of claim 1, wherein theprocessor is further configured to: provide the adjusted coordinates asan input for a primary application, wherein the primary applicationincludes one of an email program, a texting program, a web browser, anda gaming application.
 10. A computer-implemented method comprising:identifying coordinates of a portion, of a touchscreen display of adevice, that receives a touch input; identifying an input instant,wherein the input instant is an instant at which the touchscreen displayreceives the touch input; determining device motion, including angularacceleration, velocity and orientation, during a input motion intervalending at the input instant and having a predetermined duration that isan estimated user response time, the device motion affects an accuracyof the coordinates of the touch input; determining a positional vectorthat is a two dimensional representation of the device motion in a planeof the touch screen taken from components of the device motion; andadjusting the coordinates with a compensation motion vector that isequal in magnitude and opposite in direction to the positional vector.11. The computer-implemented method of claim 10, further comprising:associating the adjusted coordinates with a graphical user interface(GUI) object located at the adjusted coordinates.
 12. Thecomputer-implemented method of claim 10, further comprising: determiningan output associated with the touch input based on the adjustedcoordinates; and further adjusting the output using a secondarypredictive process.
 13. The computer-implemented method of claim 10,wherein determining the change in device motion further comprises:receiving a plurality of device motion values over the input motioninterval; and determining the device motion based on the plurality ofdevice motion values.
 14. The computer-implemented method of claim 13,wherein identifying the input motion interval further comprises:providing a simulated touch input test that includes a configuration ofgraphical user interface (GUI) objects displayed on the touchscreendisplay and that move relative to the touchscreen display to simulatedevice motion; and determining the input motion interval based on thesimulated touch input test.
 15. The computer-implemented method of claim14, wherein determining the input motion interval based on the simulatedtouch input test further comprises: identifying an expected touch inputat an expected touch location; receiving a test touch input at a testtouch location; identifying a simulated device motion associated withthe test touch input; determining a distance between the test touchlocation and the expected touch location; and determining the inputmotion interval based on the simulated device motion and the distancebetween the test touch location and the expected touch location.
 16. Thecomputer-implemented method of claim 10, further comprising: determiningthe orientation based on one or more of a yaw, pitch, or roll of thedevice in a multi-coordinate system.
 17. The computer-implemented methodof claim 10, further comprising: providing the adjusted coordinates asan input for a primary application, wherein the primary applicationincludes one of an email program, a texting program, a web browser, anda gaming application.